home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Original Shareware 1.1
/
The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso
/
18
/
fpc103.zip
/
VIDEO.SEQ
< prev
next >
Wrap
Text File
|
1988-06-02
|
2KB
|
69 lines
\ VIDEO.SEQ Direct VIDEO Screen output by Tom Zimmer
FILES DEFINITIONS
VARIABLE VIDEO.SEQ
FORTH DEFINITIONS
VARIABLE ATTRIB 7 ATTRIB !-T \ display attribute value
VARIABLE VIDEO-SEG \ Segment of display
VARIABLE TYPESEG \ video type segment, the segment we are typing from.
CODE ?VMODE ( --- N1 )
MOV AH, # 15 INT 16 SUB AH, AH
1PUSH END-CODE
DEFER INITMONO ' NOOP IS INITMONO \ INITIALIZATION VECTOR AVAILABLE
DEFER INITCOLOR ' NOOP IS INITCOLOR \ FOR MONOCHROME AND COLOR
HEX
: VMODE.SET ( --- )
?VMODE 7 =
IF 0B000 INITMONO
ELSE 0B800 INITCOLOR
THEN VIDEO-SEG ! ;
DECIMAL
comment:
CODE VTYPE ( string length x y -- )
POP AX \ Y
POP DX \ X
POP BX \ LENGTH
PUSH BX \ Save them back again
PUSH DX
PUSH AX
ADD DX, BX \ Set length + X position to DL
cmp dx, # 79
>= if
mov dx, # 79
then
mov #out dx
MOV DH, AL \ Move Y to DH
XOR BX, BX \ Clear BX
MOV AH, # 2
INT 16 \ Move cursor to end of typed string
MOV AX, # 160
POP BX MUL BX MOV DI, AX
POP AX SHL AX, # 1 ADD DI, AX
POP CX POP BX
XCHG SI, BX \ SI is the source
PUSH BX \ Save SI for later restoral
PUSH ES \ save ES
MOV AH, ATTRIB \ display attributes
MOV ES, VIDEO-SEG \ destination segment
MOV DS, TYPESEG \ source segment
LABEL VTYPE1 LODSB STOSW \ Move a byte to display
LOOP VTYPE1 \ LOOP till CX is zero
POP ES \ restore ES
POP SI \ Restore IP
MOV BX, CS MOV DS, BX \ restore DS
NEXT END-CODE
DECIMAL
comment;